package com.usian.controller;

import com.usian.feign.TbItemFeign;
import com.usian.pojo.TbItem;
import com.usian.utils.PageResult;
import com.usian.utils.Result;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

/**
 * @author chen
 * @date 2021/1/9 - 11:36 - 星期六
 * @project usian_parent
 * @package com.usian.controller
 * @by GGbomd猪猪侠
 */
@Api(value = "商品管理接口") //修饰整个类，描述Controller的作用
@RestController
@RequestMapping("/backend/item")
public class TbItemControllerWeb {

    @Autowired
    private TbItemFeign tbItemFeign;

    /**
     * 商品列表查询
     * @param page  页码  默认1
     * @param rows  每页显示的条数  默认10
     * @return
     */
    @ApiOperation(value = "查询商品分页")  //描述一个类的一个方法，或者说一个接口
    @ApiImplicitParams({ //多个参数描述
            @ApiImplicitParam(name = "page",type = "Integer",value = "页码",defaultValue = "1"), //defaultValue:默认值
            @ApiImplicitParam(name = "rows",type = "Integer",value = "每页显示多少条",defaultValue = "10")
    })
    @ApiResponses({ //HTTP响应整体描述
            @ApiResponse(code = 200,message = "查询成功"), //HTTP响应其中1个描述
            @ApiResponse(code = 500,message = "查询失败") //code:状态码
    })
    @RequestMapping(value = "/selectTbItemAllByPage",method = RequestMethod.GET)
    public Result selectTbItemAllByPage(@RequestParam(defaultValue = "1") Integer page,
                                        @RequestParam(defaultValue = "10") Integer rows){
        PageResult pageResult = tbItemFeign.selectTbItemAllByPage(page, rows);
        if (pageResult!=null && pageResult.getResult() !=null && pageResult.getResult().size() > 0){
            return Result.ok(pageResult);
        }
        return Result.error("查无数据");
    }

    /**
     * 商品的添加
     * @param tbItem
     * @param desc
     * @param itemParams
     * @return
     */
    @ApiOperation("商品的添加")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "desc",type = "String",value = "商品描述信息"),
            @ApiImplicitParam(name = "itemParams",type = "String",value = "商品规格参数")
    })
    @RequestMapping(value = "/insertTbItem",method = RequestMethod.POST)
    public Result  insertTbItem(TbItem tbItem,String desc ,String itemParams){
        Integer integer = tbItemFeign.insertTbItem(tbItem, desc, itemParams);
        //判断有没有3条数据
        if (integer==3){
            return Result.ok(integer);
        }
        return Result.error("添加失败");
    }

    /**
     * 商品的删除
     * @param itemId
     * @return
     */
    @ApiOperation(value = "删除商品基本信息",notes = "根据itemId删除该商品的基本信息") //描述一个类的一个方法，或者说一个接口
    @ApiImplicitParam(name = "itemId",type = "Long",value = "商品id") //单个参数描述 name:参数名称  type:参数类型 value:描述
    @RequestMapping(value = "/deleteItemById",method = RequestMethod.GET) //看是post请求 还是get请求
    public Result deleteItemById(Long itemId){
        Integer integer = tbItemFeign.deleteItemById(itemId);
        if (integer!=null){
            return Result.ok(integer);
        }
        return Result.error("删除失败");
    }

    /**
     * 根据商品 ID 查询商品，商品分类，商品描述，商品规格参数
     * @param itemId
     * @return
     */
    @RequestMapping("/preUpdateItem")
    public Result preUpdateItem(Long itemId){
        Map<String, Object> map = tbItemFeign.preUpdateItem(itemId);
        if (map.size() > 0){
            return Result.ok(map);
        }
        return Result.error("查无结果");
    }

    /**
     * 根据商品id去修改
     * @param tbItem
     * @param desc
     * @param itemParams
     * @return
     */
    @RequestMapping("/updateTbItem")
    public Result updateTbItem(TbItem tbItem,String desc ,String itemParams){
        Integer integer = tbItemFeign.updateTbItem(tbItem, desc, itemParams);
        if (integer==3){
            return Result.ok(integer);
        }
        return Result.error("修改失败");
    }
}
